<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
      //promise 中指定回调函数和改变状态谁先谁后
      // 都有可能，一般是先指定回调函数，在改变状态
      //
       new Promise((resolve, reject)=>{
         setTimeout(()=>{ 
             resolve(123)   // 后该改变状态，异步执行回调函数
            },1000)
      }).then(   // 先制定回调函数，然后保存当前指定的回调函数 
          value=>{
              console.log(value)
          },
          reason=>{
            console.log(reason)
          }
      ) 

     // 先改变状态在指定回调函数1
      new Promise((resolve, reject)=>{
            resolve(456)
      }).then(
          value=>{
              console.log(value)
          },
          reason=>{
            console.log(reason)
          }
      ) 

    // 先改变状态在指定回调函数2
    const p =  new Promise((resolve, reject)=>{
      setTimeout(()=>{ 
             resolve(789)   // 后该改变状态，异步执行回调函数
            },1000)
      })
    
    setTimeout(()=>{
        p.then(
            value=>{
              console.log(value)
          },
          reason=>{
            console.log(reason)
          }
        )
    },2000)
    </script>
</body>
</html>